package com.hckjsec.cloud.service;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.hckjsec.cloud.domain.AppletsBusiness;
import com.hckjsec.cloud.domain.wechatDataView.BidDataView;
import com.hckjsec.cloud.domain.wechatView.OpenidView;

/**
 * 申办信息Service接口
 * 
 * @author cyt
 * @date 2021-08-23
 */
public interface IAppletsBusinessService 
{
    /**
     * 查询申办信息
     * 
     * @param id 申办信息ID
     * @return 申办信息
     */
    public AppletsBusiness selectAppletsBusinessById(Long id);

    /**
     * 查询申办信息列表
     * 
     * @param appletsBusiness 申办信息
     * @return 申办信息集合
     */
    public List<AppletsBusiness> selectAppletsBusinessList(AppletsBusiness appletsBusiness);

    /**
     * 新增申办信息
     * 
     * @param appletsBusiness 申办信息
     * @return 结果
     */
    public int insertAppletsBusiness(AppletsBusiness appletsBusiness);

    /**
     * 修改申办信息
     * 
     * @param appletsBusiness 申办信息
     * @return 结果
     */
    public int updateAppletsBusiness(AppletsBusiness appletsBusiness);

    /**
     * 批量删除申办信息
     * 
     * @param ids 需要删除的申办信息ID
     * @return 结果
     */
    public int deleteAppletsBusinessByIds(Long[] ids);

    /**
     * 删除申办信息信息
     * 
     * @param id 申办信息ID
     * @return 结果
     */
    public int deleteAppletsBusinessById(Long id);


    /**
     * 根据手机端数据新增数据
     *
     * @param id 申办信息ID
     * @return 主键id
     */
    public Long insertAppletsBusinessData(OpenidView openidView, BidDataView bidDataView);

    /**
     * 业务主表，修改总费用和总事项
     *
     * @param id 申办信息ID
     * @return 主键id
     */
    public void updateCostAndMatter(Long id);

    /**
     * 根据案件状态对应的案件数量
     *
     * @param deptId 申办信息
     * @return 结果
     */
    public List<Map<String,Integer>> findStateByNumMap(Long deptId);

    /**
     * 根据公证事项对应的案件数量
     *
     * @param deptId 申办信息
     * @return 结果
     */
    public List<Map<String,Integer>> findCategoryByNumMap(Long deptId);

    /**
     * 根据日期对应的案件数量
     *
     * @param deptId 申办信息
     * @return 结果
     */
    public List<Map<String,Integer>> findOperatortimeByNumMap(Long deptId);

    /**
     * 根据案件状态各机构对应的案件数量
     *
     * @param deptId 申办信息
     * @return 结果
     */
    public List<Map<String,Integer>> findDeptIdByNumMap(AppletsBusiness appletsBusiness);

    /**
     * 根据案件状态各机构对应的费用总额
     *
     * @param deptId 申办信息
     * @return 结果
     */
    public List<Map<String, BigDecimal>> findDeptIdByMoneyMap(AppletsBusiness appletsBusiness);

    /**
     * 分组查询各类别数量
     *
     * @param ids 需要查询的数据ID
     * @return 结果
     */
    public List<Map<String, Integer>>  findCategoryIdByNumMap(Long[] ids);

    /**
     * 分组查询各月数量
     *
     * @param ids 需要查询的数据ID
     * @return 结果
     */
    public List<Map<String, Integer>>  findOperatortimeIdByNumMap(Long[] ids);


    /**
     * 查询申办信息列表2
     *
     * @param appletsBusiness 申办信息2
     * @return 申办信息集合2
     */
    public List<AppletsBusiness> selectAdministrationBusinessList(AppletsBusiness appletsBusiness);


    /**
     * 查询申办信息列表3
     *
     * @param appletsBusiness 申办信息2  类别
     * @return 申办信息集合2
     */
    public List<AppletsBusiness> selectAdministrationCategoryList(AppletsBusiness appletsBusiness);

    /**
     * 查询申办信息列表4
     *
     * @param appletsBusiness 申办信息 openid数组
     * @return 申办信息集合4
     */
    public List<AppletsBusiness> selectAppletsBusinessOrderList(String[] openid);

    /**
     * 查询申办信息列表
     *
     * @param appletsBusiness 过滤开视频的案件
     * @return 申办信息集合
     */
    public List<AppletsBusiness> selectAppletsBusinessVideoList(AppletsBusiness appletsBusiness);
}
